/// <summary>
/// Copyright 2010 Ivo Limmen (ivo@limmen.org)
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
/// 
/// http://www.apache.org/licenses/LICENSE-2.0
/// 
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
/// </summary>

using System;
using System.ServiceProcess;

using ServiceController.Api;
using Util.Reflection;

namespace ServiceController
{
	public class ServiceControllerRunner : ServiceBase
	{		
		private ServiceController serviceController;
		
		public static void Main(string[] args) 
		{
			Console.WriteLine("Starting in console...");
			ServiceControllerRunner runner = new ServiceControllerRunner();
			
			runner.OnStart(args);

			Console.WriteLine("Running. Press a key to exit.");
			Console.ReadKey();
			
			runner.OnStop();
		}
		
		public ServiceControllerRunner()
		{
			this.AutoLog = true;
			this.CanShutdown = true;
			this.CanPauseAndContinue = false;
			this.CanStop = true;
			this.ServiceName = "ServiceController";
		}
		
		protected override void OnStart (string[] args)
		{
			base.OnStart (args);
			Console.WriteLine("Starting ServiceController...");
						
			this.serviceController = new ServiceController();
		}
		
		protected override void OnStop ()
		{
			Console.WriteLine("Stopping ServiceController...");
            this.serviceController.StopServices();
			base.OnStop ();
		}
	}
}
